﻿using TweetSharp.Model;
using System.Collections.Generic;
using TweetSharp.Twitter.Model;
namespace TwitterLib
{
    public interface IServiceApi
    {
        Tweet AddTweet(string text);
        Tweet AddTweet(string text, long replyid);
        Tweet AddTweet(string text, string imageFilePath);
        Tweet AddReply(string text, long replyid, long cid);
        Tweet AddReply(string text, long replyid);

        string AccessToken { get; set; }
        string AccessTokenSecret { get; set; }
        string ClientName { get; set; }
        string CreateFriendshipUrl { get; set; }
        string SendMessageUrl { get; set; }
        string UpdateUrl { get; set; }
        string UserName { get; }
        string UserShowUrl { get; set; }
        string UserTimelineUrl { get; set; }
        string DestroyDirectMessageUrl { get; set; }
        string DestroyUrl { get; set; }
        string DirectMessagesUrl { get; set; }
        string FollowersUrl { get; set; }
        string FriendsTimelineUrl { get; set; }
        string FriendsUrl { get; set; }
        string PublicTimelineUrl { get; set; }
        string MentionsTimelineUrl { get; set; }
        string Format { get; set; }
        bool IsLoggedIn();

        void DestroyDirectMessage(long id);
        void DestroyTweet(long id);
        void FollowUser(int userId);
        void SendMessage(string user, string text);

        UserCollection GetFriends(int userId);
        UserCollection GetFriends();
        User CurrentlyLoggedInUser { get; set; }
        User GetUser(int userId);
        User Login(OAuthToken token);
        Tweet RetrieveTweet(long id);
        TweetCollection GetComments(long id);
        TweetCollection GetCommentsTimeline();
        TweetCollection GetCommentsToMe();
        TweetCollection GetCommentsByMe();
        TweetCollection GetFriendsTimeline();
        TweetCollection GetFriendsTimeline(long before, int userId);
        TweetCollection GetFriendsTimeline(long before);
        TweetCollection GetFriendsTimeline(int page);
        TweetCollection GetFriendsTimeline(int page, int userId);
        TweetCollection GetPublicTimeline(long before);
        TweetCollection GetPublicTimeline(int page);
        TweetCollection GetPublicTimeline();
        TweetCollection GetMentions();
        TweetCollection GetMentions(long before);
        TweetCollection GetMentions(int page);
        TweetCollection GetUserTimeline(int userId);
        TweetCollection GetUserTimeline(long before, int userId, string screenName);
        TweetCollection GetUserTimeline(long before, int userId);
        TweetCollection GetUserTimeline(int userId, string screenName);
        //TweetCollection SearchStatuses(string phrase);
        UserCollection SearchUsers(string phrase);
        DirectMessageCollection RetrieveMessages();
        DirectMessageCollection RetrieveMessages(long? before);
        DirectMessageCollection RetrieveSentMessages();
        DirectMessageCollection RetrieveSentMessages(long? before);
        IDictionary<string, EmotionCollection> GetEmotions();
        System.Net.IWebProxy WebProxy { get; set; }

        string TwitterServerUrl { get; set; }

        void PostPhoto(System.IO.FileInfo fileInfo, string text);
    }
}
